equivspec DocBook {

  // Note: If an element is not explicitly declared the equivalence system defaults to deep equality, i.e. scope, annotations,
  // and (potential) constituents have to be equal.
  
  //@todo alternative syntax for all constituents: constituents { _ }
  //@todo scoping
  //  - could be a namespace for XML documents
  //  - could be an expression like ``all elements with attribute foo having value bar''
  //@todo threshold for expressing percental similarity  
  //@todo reassess:
  // With such a equivalence system (due to ``?'' operator) one can achieve 
  //   (1)  patch(diff(v1, v2) wihtEuivalenceSystem E, v2) ~ v2
  // rather than
  //   (2)  patch(diff(v1, v2) withEuivalenceSystem E, v2) = v2
  // However, note that (2) is required for versioning.

  element appendix {}
  element attribution {}
  element author {
    //scope =
    annotations {}
    constitutents { firstname, surname? }
  }
  element authorgroup {}
  
  element blockquote {}
  ordered element book {
    //scope = ""
    annotations { id, name? }
    constituents {  _ \ { bookinfo } }  
  }
  element bookinfo {}
  
  element chapter {}
  element citetitle {}
  element command {}
  element computeroutput {}
  element copyright {}
  
  element edition {}
  element editor {}
  element email {}
  element emphasis {}
  element entry {}
  element example {}
  
  element figure {}
  element filename {}
  //element firstname {} // deep equality
  element firstterm {}
  element footnote {}
  element function {}
  
  element graphic {}
  element guimenu {}
  element guimenuitem {}
  
  element holder {}
  
  element index {}
  element indexterm {}
  element isbn {}
  element itemizedlist {}
  
  element legalnotice {}
  element listitem {}
  element literal {}
  
  element note {}
  
  element option {}
  element orderedlist {}
  element pagenums {}
  element para {}
  element parameter {}
  element preface {}
  element prefaceinfo {}
  element primary {}
  element programlisting {}
  element pubdate {}
  
  element quote {}
  
  element refentry {}
  element refname {}
  element refnamediv {}
  element refpurpose {}
  element refsect1 {}
  element replaceable {}
  element row {}
  
  element screen {}
  element secondary {}
  element sect1 {}
  element sect2 {}
  element sect3 {}
  element sect4 {}
  element sidebar {}
  element subtitle {}
  //element surname {} // deep equality
  
  element table {}
  element tbody {}
  element term {}
  element tertiary {}
  element tgroup {}
  element thead {}
  element tip {}
  element title {}
  
  element ulink {}
  element uri {}
  element userinput {}
  
  element variablelist {}
  element varlistentry {}
  
  element warning {}
  
  element xref {}
  
  element year {} 

} 